package com.weplay.gameplane;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.support.annotation.NonNull;
import android.util.Log;
import android.view.View;

import com.weplay.gameplane.game.GameView;
import com.weplay.gameplane.utils.DateTimeUtils;
import com.weplay.gameplane.utils.HolidayUtil;
import com.weplay.gameplane.utils.SPUtils;
import com.weplay.gameplane.widget.AlertDialog;

import java.text.SimpleDateFormat;
import java.util.Date;


public class GameActivity extends Activity {

    private GameView gameView;
    Handler handler = new Handler(){
        @Override
        public boolean sendMessageAtTime(@NonNull Message msg, long uptimeMillis) {
            Log.d("HandleAndPostDelayed", "HandleAndPostDelayed");
            return super.sendMessageAtTime(msg, uptimeMillis);
        }
    };

    Runnable runnable = new Runnable() {
        @Override
        public void run() {
            // do something
            getHoliday();
            handler.postDelayed(this, 10000);
        }
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_game);
        gameView = (GameView)findViewById(R.id.gameView);
        //0:combatAircraft
        //1:explosion
        //2:yellowBullet
        //3:blueBullet
        //4:smallEnemyPlane
        //5:middleEnemyPlane
        //6:bigEnemyPlane
        //7:bombAward
        //8:bulletAward
        //9:pause1
        //10:pause2
        //11:bomb
        int[] bitmapIds = {
                R.drawable.plane,
                R.drawable.explosion,
                R.drawable.yellow_bullet,
                R.drawable.blue_bullet,
                R.drawable.small,
                R.drawable.middle,
                R.drawable.big,
                R.drawable.bomb_award,
                R.drawable.bullet_award,
                R.drawable.pause1,
                R.drawable.pause2,
                R.drawable.bomb
        };
        gameView.start(bitmapIds);
        //如果用户小于18岁 定时判断 是否在可玩时间
        if ( SPUtils.getInstance(GameActivity.this).getInt("userAge", 20)<18) {
            HandleAndPostDelayed();
        }
    }


     private void  HandleAndPostDelayed() {
        // 开启定时器
        handler.postDelayed(runnable, 2000);

    }

    private void getHoliday(){
        SimpleDateFormat f = new SimpleDateFormat("yyyyMMdd");
        String httpArg = f.format(new Date());
        HolidayUtil.request(httpArg, new HolidayUtil.NetWorkCallback() {
            @Override
            public void onCallback(String jsonResult) {
                //主线程中更新UI
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        //TODO 在主线程中更新UI的操作
                        // 0 上班 1周末 2节假日
                        if ("0".equals(jsonResult)) {
                            if (DateTimeUtils.dateChangeToWeek(DateTimeUtils.getCurrentDate(DateTimeUtils.DEF_DATE_FORMAT_1)) == 5){
                                //今天是 周五
                                if (DateTimeUtils.getCurrentHour() == 20 ){
//                                    showHintDialog(true,"你当前为未成年账号，已被纳入防沉迷系统。根据国家新闻出版署《关于防止未成年人沉迷网络游戏的通知》，《关于进一步严格管理 切实防止未成年人沉迷网络游戏的通知》，网络游戏仅可在周五、周六、周日和法定节假日每日20时至21时向未成年人提供60分钟网络游戏服务。当前时间段可以游玩，请合理安排时间。");
                                }else{
                                    showHintDialog(false,"你当前为未成年账号，已被纳入防沉迷系统。根据国家新闻出版署《关于防止未成年人沉迷网络游戏的通知》，《关于进一步严格管理 切实防止未成年人沉迷网络游戏的通知》，网络游戏仅可在周五、周六、周日和法定节假日每日20时至21时向未成年人提供60分钟网络游戏服务。当前时间段无法游玩，请合理安排时间。");
                                }
                            }else {
                                showHintDialog(false,"你当前为未成年账号，已被纳入防沉迷系统。根据国家新闻出版署《关于防止未成年人沉迷网络游戏的通知》，《关于进一步严格管理 切实防止未成年人沉迷网络游戏的通知》，网络游戏仅可在周五、周六、周日和法定节假日每日20时至21时向未成年人提供60分钟网络游戏服务。当前时间段无法游玩，请合理安排时间。");
                            }
                        }else if ("1".equals(jsonResult) || "2".equals(jsonResult)) {
                            //周末和节假日
                            if (DateTimeUtils.getCurrentHour() == 20 ){
//                                showHintDialog(true,"你当前为未成年账号，已被纳入防沉迷系统。根据国家新闻出版署《关于防止未成年人沉迷网络游戏的通知》，《关于进一步严格管理 切实防止未成年人沉迷网络游戏的通知》，网络游戏仅可在周五、周六、周日和法定节假日每日20时至21时向未成年人提供60分钟网络游戏服务。当前时间段可以游玩，请合理安排时间。");
                            }else{
                                showHintDialog(false, "你当前为未成年账号，已被纳入防沉迷系统。根据国家新闻出版署《关于防止未成年人沉迷网络游戏的通知》，《关于进一步严格管理 切实防止未成年人沉迷网络游戏的通知》，网络游戏仅可在周五、周六、周日和法定节假日每日20时至21时向未成年人提供60分钟网络游戏服务。当前时间段无法游玩，请合理安排时间。");
                            }
                        }

                    }
                });
            }
        });
    }


    public void showHintDialog(boolean canGame, String hintMsg) {
        new AlertDialog(GameActivity.this).setTitle("提示")
                .setMessage(hintMsg)
                .setOk("确定", new AlertDialog.OnButtonClickListener() {
                    @Override
                    public void onClick() {
                        if (!canGame){
                            GameActivity.this.finish();
                        }
                    }
                })
                .show();
    }

    @Override
    protected void onPause() {
        super.onPause();
        if(gameView != null){
            gameView.pause();
        }
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if(gameView != null){
            gameView.destroy();
        }
        gameView = null;

        // 停止定时器
        handler.removeCallbacks(runnable);
    }
}